home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / UTIL / SCREEN / CURSES01 / minix / h / curses next >
Text File  |  1992-02-27  |  15KB  |  353 lines

  1. /****************************************************************/
  2. /*                CURSES.H                */
  3. /* Header file for definitions and declarations for the        */
  4. /* PCcurses package. This should be #include'd in all user    */
  5. /* programs.                            */
  6. /****************************************************************/
  7. /* This version of curses is based on ncurses, a curses version    */
  8. /* originally written by Pavel Curtis at Cornell University.    */
  9. /* I have made substantial changes to make it run on IBM PC's,    */
  10. /* and therefore consider myself free to make it public domain.    */
  11. /*        Bjorn Larsson (...mcvax!enea!infovax!bl)    */
  12. /****************************************************************/
  13. /* 1.0:    Release:                    870515    */
  14. /****************************************************************/
  15. #ifdef ARCH
  16. #ifndef __STDIO_H
  17. #include <stdio.h>
  18. #endif
  19. #endif
  20. /* general definitions */
  21.  
  22. #define  mvwclrtobot    mvwclbt
  23. #define  mvwclrtoeol    mvwcleol
  24. #define     TRUE        1        /* booleans */
  25. #define     FALSE        0
  26. #define     ERR        1        /* general error flag */
  27. #define     OK        0        /* general OK flag */
  28.  
  29. /* functions defined as macros */
  30.  
  31. #define getch()       wgetch(stdscr)    /* using macroes allows you to use */
  32. #define    ungetch(c) wungetch(c)        /* #undef getch/ungetch in your */
  33.                     /* programs to use MSC getch() and */
  34.                     /* ungetch() routines */
  35.  
  36. #define getyx(win,y,x)       (y = (win)->_cury, x = (win)->_curx)
  37.  
  38. #ifndef max
  39. #define max(a,b) (((a) > (b)) ? (a) : (b))
  40. #endif
  41. #ifndef min
  42. #define min(a,b) (((a) < (b)) ? (a) : (b))
  43. #endif
  44.  
  45. /* video attribute definitions */
  46.  
  47. #define    A_ALTCHARSET   0x2000
  48. #define    A_BLINK        0x0100
  49. #define    A_BLANK        0
  50. #define    A_BOLD         0x0200
  51. #define    A_DIM          0
  52. #define    A_PROTECT      0
  53. #define    A_REVERSE      0x0400
  54. #define    A_STANDOUT     0x0800
  55. #define    A_UNDERLINE    0x1000
  56.  
  57. /* function and keypad key definitions */
  58.  
  59. #define KEY_BREAK      0x101        /* Not on PC */
  60. #define KEY_DOWN       0x102        /* The four arrow keys */
  61. #define KEY_UP         0x103
  62. #define KEY_LEFT       0x104
  63. #define KEY_RIGHT      0x105
  64. #define KEY_HOME       0x106        /* Home key (upward+left arrow) */
  65. #define KEY_BACKSPACE  0x107        /* Not on PC */
  66. #define KEY_F0         0x108        /* Function keys. Space for */
  67. #define KEY_F(n)       (KEY_F0+(n)) /*  64 keys is reserved. */
  68. #define KEY_DL         0x148        /* Not on PC */
  69. #define KEY_IL         0x149        /* Insert line */
  70. #define KEY_DC         0x14a        /* Delete character */
  71. #define KEY_IC         0x14b        /* Insert char or enter insert mode */
  72. #define KEY_EIC        0x14c        /* Exit insert char mode */
  73. #define KEY_CLEAR      0x14d        /* Clear screen */
  74. #define KEY_EOS        0x14e        /* Clear to end of screen */
  75. #define KEY_EOL        0x14f        /* Clear to end of line */
  76. #define KEY_SF         0x150        /* Scroll 1 line forward */
  77. #define KEY_SR         0x151        /* Scroll 1 line backwards (reverse) */
  78. #define KEY_NPAGE      0x152        /* Next page */
  79. #define KEY_PPAGE      0x153        /* Previous page */
  80. #define KEY_STAB       0x154        /* Set tab */
  81. #define KEY_CTAB       0x155        /* Clear tab */
  82. #define KEY_CATAB      0x156        /* Clear all tabs */
  83. #define KEY_ENTER      0x157        /* Enter or send (unreliable) */
  84. #define KEY_SRESET     0x158        /* soft (partial) reset (unreliable) */
  85. #define KEY_RESET      0x159        /* reset or hard reset (unreliable) */
  86. #define KEY_PRINT      0x15a        /* print or copy */
  87. #define KEY_LL         0x15b        /* home down or bottom (lower left) */
  88. #define KEY_ABORT      0x15c        /*  Abort/Terminate key (any) */
  89. #define KEY_SHELP      0x15d        /* Short help */
  90. #define KEY_LHELP      0x15e        /* Long help */
  91.  
  92. /* color attributes
  93.  *  use the A_COLOR macro to specify foreground and background colors.
  94.  *  For example, to set the stdscr to use green characters on a yellow
  95.  *  background, you would say:
  96.  *    attrset( A_COLOR(A_GREEN, A_YELLOW) );
  97.  */
  98. #define A_COLOR(fore,back)    (((fore) << 8) | ((back) <<12 ) )
  99.  
  100. /* primary colors */
  101. #define A_BLACK        0
  102. #define A_BLUE        4
  103. #define A_GREEN        2
  104. #define A_RED        1
  105.  
  106. /* the "intensity" bit
  107.  *  Warning: If used on the background color, the intensity bit
  108.  *  will cause the text to blink.  This reduces the number of
  109.  *  background colors from 16 to 8.  (There is a hardware-dependent
  110.  *  method around this problem, but PC Curses does not support it.)
  111.  */
  112. #define A_INTENSE    8
  113.  
  114. /* secondary colors */
  115. #define A_CYAN        6    /* blue-green */
  116. #define A_MAGENTA    5    /* purple */
  117. #define A_BROWN        3    /* (or dark yellow) */
  118. #define A_WHITE        7    /* white (or light gray) */
  119.  
  120. /* "light" colors */
  121. #define A_GRAY        (A_INTENSE|A_BLACK)
  122. #define A_LBLUE        (A_INTENSE|A_BLUE)
  123. #define A_LGREEN    (A_INTENSE|A_GREEN)
  124. #define A_LCYAN        (A_INTENSE|A_CYAN)
  125. #define A_LRED        (A_INTENSE|A_RED)
  126. #define A_LMAGENTA    (A_INTENSE|A_MAGENTA)
  127. #define A_YELLOW    (A_INTENSE|A_BROWN)
  128. #define A_BRIGHTWHITE    (A_INTENSE|A_WHITE)
  129.  
  130. #define COLOR_ORANGE    A_LRED
  131. #define COLOR_MAGENTA   A_MAGENTA
  132. #define COLOR_RED       A_RED
  133. #define COLOR_BLUE      A_BLUE
  134. #define COLOR_GREEN     A_GREEN
  135. #define COLOR_GREY      A_GRAY
  136. #define COLOR_YELLOW    A_YELLOW
  137. #define COLOR_CYAN      A_CYAN
  138. #define COLOR_WHITE     A_WHITE
  139. #define COLOR_TAN       A_BROWN
  140.  
  141. /* type declarations */
  142.  
  143. typedef    char    bool;            /* boolean type */
  144.  
  145. typedef struct
  146.   {
  147.   int       _cury;            /* current pseudo-cursor */
  148.   int       _curx;
  149.   int      _maxy;            /* max coordinates */
  150.   int      _maxx;
  151.   int      _begy;            /* origin on screen */
  152.   int      _begx;
  153.   int       _flags;            /* window properties */
  154.   int       _attrs;            /* attributes of written characters */
  155.   int       _colors;            /* screen colors, forgrund and back */
  156.   int      _tabsize;            /* tab character size */
  157.   bool       _clear;            /* causes clear at next refresh */
  158.   bool       _leave;            /* leaves cursor as it happens */
  159.   bool       _scroll;            /* allows window scrolling */
  160.   bool       _nodelay;            /* input character wait flag */
  161.   bool       _keypad;            /* flags keypad key mode active */
  162.   int    **_line;            /* pointer to line pointer array */
  163.   int      *_minchng;            /* First changed character in line */
  164.   int      *_maxchng;            /* Last changed character in line */
  165.   int       _regtop;            /* Top/bottom of scrolling region */
  166.   int       _regbottom;
  167.   }    WINDOW;
  168.  
  169. /* External variables */
  170.  
  171. extern    int    LINES;            /* terminal height */
  172. extern    int    COLS;            /* terminal width */
  173. extern    WINDOW *curscr;            /* the current screen image */
  174. extern    WINDOW *stdscr;            /* the default screen window */
  175.  
  176. extern    unsigned char ACS_ULCORNER;    /* terminal dependent block grafic */
  177. extern    unsigned char ACS_LLCORNER;    /* charcters.  Forget IBM, we are */
  178. extern    unsigned char ACS_URCORNER;    /* independent of their charset. :-) */
  179. extern    unsigned char ACS_LRCORNER;
  180. extern    unsigned char ACS_RTEE;
  181. extern    unsigned char ACS_LTEE;
  182. extern    unsigned char ACS_BTEE;
  183. extern    unsigned char ACS_TTEE;
  184. extern    unsigned char ACS_HLINE;
  185. extern    unsigned char ACS_VLINE;
  186. extern    unsigned char ACS_PLUS;
  187. extern    unsigned char ACS_S1;
  188. extern    unsigned char ACS_S9;
  189. extern    unsigned char ACS_DIAMOND;
  190. extern    unsigned char ACS_CKBOARD;
  191. extern    unsigned char ACS_DEGREE;
  192. extern    unsigned char ACS_PLMINUS;
  193. extern    unsigned char ACS_BULLET;
  194. extern    unsigned char ACS_LARROW;
  195. extern    unsigned char ACS_RARROW;
  196. extern    unsigned char ACS_DARROW;
  197. extern    unsigned char ACS_UARROW;
  198. extern    unsigned char ACS_BOARD;
  199. extern    unsigned char ACS_LANTERN;
  200. extern    unsigned char ACS_BLOCK;
  201.  
  202. /* for tty input emulation mode */
  203.  
  204. #if 0
  205. extern int _ttyflags;
  206.  
  207. #define T_RAW    01
  208. #define T_CRMOD    02
  209. #define T_ECHO    04
  210. #define T_NONL    010
  211. #endif
  212.  
  213. #if 0
  214. /* _scradr is used to determine the screen update method.
  215.  *  this is still experimental.
  216.  */
  217. extern int _scradr;
  218. #define T_BIOS        0        /* use bios updating */
  219. #define T_DIRECT    0xffff        /* direct update, figure out type */
  220. #define T_MA        0xb000        /* direct update, assume monochrome */
  221. #define T_CGA        0xb800        /* direct update, assume cga */
  222. #define T_EGA        0xa800        /* direct update, assume ega */
  223. #endif
  224.  
  225. /* PCcurses function declarations */
  226.  
  227. extern    int     addch();        /* put char in stdscr */
  228. extern    int     addstr();        /* put string in stdscr */
  229. extern    void     attrset();        /* set stdscr char attributes */
  230. extern    void     attroff();        /* clear attribute(a) stdscr */
  231. extern    void     attron();        /* add attribute(s) stdscr */
  232. extern    int     baudrate();        /* compatibility dummy */
  233. extern    void     beep();        /* sound bell */
  234. extern    void     box();            /* draw a box around a window */
  235. extern    void     cbreak();        /* set terminal cbreak mode */
  236. extern    void     clear();        /* clear stdscr */
  237. extern    void     clearok();        /* marks a window for screen clear */
  238. extern    int     clrtobot();        /* clear end of stdscr */
  239. extern    int     clrtoeol();        /* clear end of line in stdscr */
  240. extern    void     crmode();        /* set terminal cbreak mode */
  241. extern    void     cursoff();        /* turns off hardware cursor */
  242. extern    void     curson();        /* turns on hardware cursor */
  243. extern    int     delch();        /* delete a char in stdscr */
  244. extern    int     deleteln();        /* delete a line in stdscr */
  245. extern    void     delwin();        /* delete a window or a subwindow */
  246. extern  void     doupdate();        /* update physical screen */
  247. extern    void     echo();        /* set terminal echo mode */
  248. extern    int     endwin();        /* cleanup and finitialization */
  249. extern    void     erase();        /* erase stdscr */
  250. extern    int     erasechar();        /* return char kill character */
  251. extern    int     fixterm();        /* compatibility dummy */
  252. extern    void     flash();        /* flash terminal screen */
  253. extern    void     flushinp();        /* kill pending keyboard input */
  254. extern  int     getstr();        /* get string to stdscr and buffer */
  255. extern    int     gettmode();        /* compatibility dummy */
  256. extern    void     idlok();        /* use ins/del line (dummy) */
  257. extern    int     initscr();        /* curses initialization */
  258. extern  int     inch();        /* get char at stdscr cursor */
  259. extern    int     insch();        /* insert character in stdscr */
  260. extern    int     insertln();        /* insert new line in stdscr */
  261. extern    void     keypad();        /* marks a window for keypad usage */
  262. extern    int     killchar();        /* return line kill character */
  263. extern    char    *longname();        /* terminal description */
  264. extern    void     leaveok();        /* marks window for cursor 'leave' */
  265. extern    void     meta();        /* marks window for meta (dummy) */
  266. extern    int     move();        /* move cursor in stdscr */
  267. extern    int     mvaddch();        /* move & put char in stdscr */
  268. extern    int     mvaddstr();        /* move & put string in stdscr */
  269. extern    int     mvclrtobot();        /* move & clear end of stdscr */
  270. extern    int     mvclrtoeol();        /* move & clear lineend in stdscr */
  271. extern    int     mvcur();        /* move terminal cursor */
  272. extern    int     mvdelch();        /* move & delete a char in stdscr */
  273. extern    int     mvdeleteln();        /* move & delete a line in stdscr */
  274. extern    int     mvgetch();        /* move & get char to stdscr */
  275. extern    int     mvgetstr();        /* move & get string to stdscr */
  276. extern    int     mvinch();        /* move & get char at stdscr cursor */
  277. extern    int     mvinsch();        /* move & insert char in stdscr */
  278. extern    int     mvinsertln();        /* move & insert new line in stdscr */
  279. extern    int     mvprintw();        /* move & print string in stdscr */
  280. extern    int     mvscanw();        /* move & get values via stdscr */
  281. extern    int     mvwaddch();        /* move & put char in a window */
  282. extern    int     mvwaddstr();        /* move & put string in a window */
  283. extern    int     mvwclrtobot();        /* move & clear end of a window */
  284. extern    int     mvwclrtoeol();        /* move & clear lineend in a window */
  285. extern    int     mvwdelch();        /* move & delete a char in a window */
  286. extern    int     mvwdeleteln();        /* move & delete a line in a window */
  287. extern    int     mvwgetch();        /* move & get char to a window */
  288. extern    int     mvwgetstr();        /* move & get string to a window */
  289. extern    int     mvwinch();        /* move & get char at window cursor */
  290. extern    int     mvwinsch();        /* move & insert char in a window */
  291. extern    int     mvwinsertln();        /* move & insert new line in window */
  292. extern    int     mvwin();        /* move window */
  293. extern    int     mvwprintw();        /* move & print string in a window */
  294. extern    int     mvwscanw();        /* move & get values via a window */
  295. extern    WINDOW    *newwin();        /* create a window */
  296. extern    void     nl();            /* set terminal cr-crlf map mode */
  297. extern    void     nocbreak();        /* unset terminal cbreak mode */
  298. extern    void     nocrmode();        /* unset terminal cbreak mode */
  299. extern    void     nodelay();        /* marks window for no input wait */
  300. extern    void     noecho();        /* unset terminal echo mode */
  301. extern    void     nonl();        /* unset terminal cr-crlf map mode */
  302. extern    void     noraw();        /* unset raw terminal mode */
  303. extern    void     overlay();        /* overlay one window on another */
  304. extern    void     overwrite();        /* overwrite one window on another */
  305. extern    int     printw();        /* print string in stdscr */
  306. extern    void     raw();            /* set raw terminal mode */
  307. extern    void     refrbrk();        /* set screen refresh break mode */
  308. extern    void     refresh();        /* refresh stdscr */
  309. extern    int     resetterm();        /* compatibility dummy */
  310. extern    int     resetty();        /* restore terminal I/O modes */
  311. extern    int     saveoldterm();        /* compatibility dummy */
  312. extern    int     saveterm();        /* compatibility dummy */
  313. extern    int     savetty();        /* save terminal I/O modes */
  314. extern    int     scanw();        /* get values via stdscr */
  315. extern    void     scroll();        /* scroll region in a window */
  316. extern    void     scrollok();        /* marks a window to allow scroll */
  317. extern    int     setsrcreg();        /* define stdscr's scroll region */
  318. extern    int     setterm();        /* compatibility dummy */
  319. extern    int     setupterm();        /* set up terminal (no-op) */
  320. extern    void     standend();        /* start normal chars in stdscr */
  321. extern    void     standout();        /* start standout chars in stdscr */
  322. extern    WINDOW    *subwin();        /* create a sub-window */
  323. extern    int     tabsize();        /* set/get tabsize of stdscr */
  324. extern    void     touchwin();        /* mark a window as modified */
  325. extern    char    *unctrl();        /* char-to-string converter */
  326. extern    int     waddch();        /* put char in a window */
  327. extern    int     waddstr();        /* put string in a window */
  328. extern    void     wattroff();        /* clear attribute(a) in window */
  329. extern    void     wattron();        /* add attribute(s) in window */
  330. extern    void     wattrset();        /* set window char attributes */
  331. extern    int     wbox();        /* draw a box inside a window */
  332. extern    void     wclear();        /* clear a window */
  333. extern    int     wclrtobot();        /* clear end of a window */
  334. extern    int     wclrtoeol();        /* clear end of line in a window */
  335. extern    int     wdelch();        /* delete a char in a window */
  336. extern    int     wdeleteln();        /* delete a line in a window */
  337. extern    void     werase();        /* erase a window */
  338. extern    int     wgetch();        /* get char to a window */
  339. extern  int     wgetstr();        /* get string to window and buffer */
  340. extern    int     winch();        /* get char at window cursor */
  341. extern    int     winsch();        /* insert character in a window */
  342. extern    int     winsertln();        /* insert new line in a window */
  343. extern    int     wmove();        /* move cursor in a window */
  344. extern    void     wnoutrefresh();    /* create screen image, w/o display */
  345. extern    int     wprintw();        /* print string in a window */
  346. extern    void     wrefresh();        /* refresh screen */
  347. extern    int     wscanw();        /* get values via a window */
  348. extern    int     wsetsrcreg();        /* define a window's scroll region */
  349. extern    void     wstandend();        /* start normal chars in window */
  350. extern    void     wstandout();        /* start standout chars in window */
  351. extern    int     wtabsize();        /* set/get tabsize of a window */
  352. extern    int     wungetch();        /* character push-back */
  353.